/**********************************************************************************************/
// dgt_AlgVar.h
//
// Common Lib for Digital Studio
// Block of management of algorithm
// Class, which represent table of Variables of algorithm 
//
// Copyright Diamant Group 2008
/**********************************************************************************************/
#ifndef _dgt_AlgVar_h_
#define _dgt_AlgVar_h_

/**********************************************************************************************/
// -------------------------------------------------------------------------------------------//
//                                   Variables table										  //
// -------------------------------------------------------------------------------------------//
// 1. Name of variable														String			  //
// 2. Name of plugin of variable											String			  //
// 3. Code of element in plugin												Int				  //
/**********************************************************************************************/

#include "dgtKernel.h"
#include "dgt_SmartMacros.h"

SMART_CLASS( dgt_AlgVar );

WX_DECLARE_OBJARRAY( dgt_AlgVar_Ptr, dgt_AlgVarArray ); 

/**********************************************************************************************/
/**
* \brief Class, which represent table of Var of algorithm
*/
class dgt_AlgVar
{
	public://///////////////////////////////////////////////////////////////////////////////////
		
		/**
		* @brief Ctor as default
		*/
		dgt_AlgVar( void )	{};

		/**
		* @brief Ctor as default
		* @param inName			Name of variable
		* @param inPlugName		Name of plugin of variable
		* @param inCode			Code of element in plugin
		*/
		dgt_AlgVar(	wxString	inName,
					wxString	inPlugName,
					unsigned	inCode );

		/**
		* @brief Dtor as default
		*/
		~dgt_AlgVar( void ) {};

		/**
		* @brief Function for getting name of variable
		* @return Name of variable
		*/
		wxString				get_Name( void );

		/**
		* @brief Function for setting name of variable
		* @param inName New name of variable
		*/
		void					set_Name( wxString inName );

		/**
		* @brief Function for getting name of plugin of variable
		* @return Name of plugin of variable
		*/
		wxString				get_PlugName( void );

		/**
		* @brief Function for setting name of plugin of variable
		* @param inPlugName New name of plugin of variable
		*/
		void					set_PlugName( wxString inPlugName );

		/**
		* @brief Function for getting code of element in plugin
		* @return Code of element in plugin
		*/
		unsigned				get_Code( void );

		/**
		* @brief Function for setting code of element in plugin
		* @param inCode Code of element in plugin
		*/
		void					set_Code( unsigned inCode );

	private:////////////////////////////////////////////////////////////////////////////////////

		wxString				m_Name;				/*!< Name of variable */

		wxString				m_PlugName;			/*!< Name of plugin of variable */
		
		unsigned				m_Code;				/*!< Code of element in plugin */
};


#endif // _dgt_AlgVar_h_
